﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>枚举值</title>
    <!-- 增加一个配置  -->
    <script src="../../../Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
    <script src="../../../Scripts/QueryString.js" type="text/javascript"></script>
    <script src="../../../Scripts/config.js" type="text/javascript"></script>
    <script src="../../../Comm/Gener.js" type="text/javascript"></script>
    <!--<link href="../../../../DataUser/Style/ccbpm.css" rel="stylesheet" type="text/css" />-->
    <link href="../../../Scripts/layui/layui/css/layui.css" rel="stylesheet" />
    <link href="../../../Scripts/easyUI/themes/default/easyui.css" rel="stylesheet" type="text/css" />
    <link href="../../../Scripts/easyUI/themes/icon.css" rel="stylesheet" type="text/css" />
    <script src="../../../Scripts/easyUI/jquery-1.8.0.min.js" type="text/javascript"></script>
    <script src="../../../Scripts/easyUI/jquery.easyui.min.js" type="text/javascript"></script>
    <script src="../../../Scripts/EasyUIUtility.js" type="text/javascript"></script>
    <link href="../../../Scripts/bootstrap/css/bootstrap.css" rel="stylesheet" />
    <script src="../js/ueditor/dialogs/internal.js"></script>
    <script src="../../../Scripts/vue.js"></script>
    <style type="text/css">
        body{ font-size:15px;}
        .trSP {
            background-color: #B9D3EE
        }

        .table-head {           
           padding:10px 15px;
        }
        .table-head .form-group{ padding-right:15px;}
        .table-head .form-group label{ padding-right:8px;}
        .table-head .form-group .btn{ margin:0px 5px;}
       
    </style>


</head>
<body>
    <div id="App">
        <div class="form-inline table-head">
           
                        <div class="form-group">
                            <label>中文名</label>
                            <input id="TB_Name" class="form-control"/>
                        </div>
                   <div class="form-group">
    <label>字段英文名</label>   <input id="TB_KeyOfEn" class="form-control" />
</div><div class="form-group"><label for="CB_Generate_Tags"><input id="CB_Generate_Tags" type="checkbox" checked="checked" />生成标签</label> </div> <div class="form-group"><label>关键字</label><input id="EnumValue" class="form-control" /> </div><div class="form-group"><input type="button" class="btn btn-primary  btn-sm" id="Btn_New" @click="SelectEnum" value="查询" /> <input type="button" class="btn btn-success btn-sm" id="Btn_New" @click="NewEnum" value="新建" /> </div>
        </div>
        <div class="table-body">
            <div style="position:relative">
                <table id="Table1" class="table table-hover">
                    <thead>
                        <tr class="active">
                            <th style='width:53px;'>#</th>
                            <th style='width:103px;'>枚举值</th>
                            <th style='width:103px;'>名称</th>
                            <th>枚举信息</th>
                            <th>子项？</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr v-for="(sysEnumMain,index) in sysEnumMains">
                            <td>{{index+1}}</td>
                            <td>
                                <label>
                                    <input type="radio" name="enumSelect" @click="ChangeEnum(sysEnumMain)" />
                                    <template v-if="sysEnumMain.EnumKey&&sysEnumMain.EnumKey!=''">
                                        {{sysEnumMain.EnumKey}}
                                    </template>

                                    <template v-else=v-else>
                                        {{sysEnumMain.No}}
                                    </template>
                                </label>
                            </td>
                            <td>{{sysEnumMain.Name}}</td>
                            <td><a href="#" @click="Edit(sysEnumMain)">{{sysEnumMain.CfgVal}}</a></td>
                            <template v-if="sysEnumMain.IsHaveDtl==1">
                                <td><a href="#" @click="EditDtl(sysEnumMain)">编辑</a></td>
                            </template>
                            <template v-else=v-else>
                                <td><a href="#" @click="CrateDtl(sysEnumMain)">创建</a></td>
                            </template>
                            <td><a href="#" @click="Del(sysEnumMain)">删除</a></td>
                        </tr>
                    </tbody>
                </table>
            </div>
            <nav>
                <ul class="pagination">                  
                    <li  v-for="k in pages" :class="pagesactive==k+1?'active':''" @click.stop="pageFenye(k)"><a href="#">{{k+1}}</a></li>                                 
                </ul>
            </nav>
        </div>
    </div>
    <script language="javascript" type="text/javascript">
        var Baseinfo = new Vue({
            el: '#App',
            data: {
                dataType: "",
                fk_mapData: "",
                webUser: null,
                sysEnumMains: [],
                selectEnum: {
                    No: "",
                    Name: "",
                    CfgVal: "",
                    EnumKey: "",
                    OrgNo: "",
                    IsHaveDtl: false,
                    AtPara:"",
                },
                pagenum: 15,
                pages: [],
                pagesactive: 1,
                sysList:[]


            },
            methods: {
                pageFenye: function (num) {
                    this.pagesactive = num + 1;
                    var sysData = []
                    var pn = num * this.pagenum
                    for (i = pn; i < this.sysList.length; i++) {
                        var en = this.sysList[i]
                        if (i < this.pagenum+pn) {
                            sysData.push(en)
                        }

                    }
                    this.sysEnumMains = sysData
                },
                ChangeEnum: function (sysEnumMain) {
                    this.SelectEnum = sysEnumMain;
                    if (!!this.SelectEnum.EnumKey)
                        $("#TB_KeyOfEn").val(this.SelectEnum.EnumKey);
                    else
                        $("#TB_KeyOfEn").val(this.SelectEnum.No);
                    $("#TB_Name").val(this.SelectEnum.Name);
                },
                NewEnum: function () {
                    var url = "EnumerationNew.htm";
                    if (this.webUser.CCBPMRunModel == 2)
                        url = "../../../../Admin/CCFormDesigner/SysEnum/Edit.htm";
                    var _this = this;
                    OpenEasyUiDialog(url, "eudlgframe", "新建枚举", 600, 400, "icon-edit", true, null, null, null, function () {
                        _this.InitData();
                    });
                },
                SelectEnum: function () {
                    var EnumName = document.getElementById("EnumValue").value;
                    /*var sql = "";
                    if (EnumName == "")
                        sql = "SELECT * FROM Sys_EnumMain";
                    else
                        sql = "SELECT * FROM Sys_EnumMain WHERE (No like '%" + EnumName + "%') OR (Name like '%" + EnumName + "%')";
                    var sysList = DBAccess.RunSQLReturnTable(sql);*/

                    var handler = new HttpHandler("BP.WF.HttpHandler.WF_Admin_FoolFormDesigner");
                    handler.AddPara("EnumName", EnumName);
                    var sysList = handler.DoMethodReturnString("SysEnumList_SelectEnum");
                    sysList = JSON.parse(sysList);

                    this.sysList = $.grep(sysList, function (item) {
                        var atPara = item.AtPara;
                        atPara = atPara == null || atPara == undefined ? "" : atPara;
                        var idx = atPara.indexOf("ParentKey");
                        return idx == 0 || idx == -1;



                    })
                    var pn = Math.ceil(this.sysList.length / this.pagenum)
                    
                    this.pages = []
                    for (p = 0; p < pn; p++) {
                        this.pages.push(p)
                    }
                    var sysData = []

                    for (i = 0; i < this.sysList.length; i++) {
                        var en = this.sysList[i]
                        if (i < this.pagenum) {
							en.EnumKey=en.enumkey;
							en.Name=en.name;
							en.CfgVal=en.cfgval;
							en.No=en.no;
							en.Lang=en.lang;
                            sysData.push(en)
                        }

                    }
					console.log(sysData)
                    this.sysEnumMains = sysData
                },
                Edit: function (sysEnumMain) {
                    var url = "EnumerationNew.htm?DoType=FrmEnumeration_SaveEnum&EnumKey=" + sysEnumMain.No;
                    if (this.webUser.CCBPMRunModel == 2)
                        url = '../../../../Admin/CCFormDesigner/SysEnum/Edit.htm?No=' + sysEnumMain.No + '&EnumKey=' + sysEnumMain.EnumKey + '&Name=' + sysEnumMain.Name + '&CfgKeys=' + sysEnumMain.CfgKeys + '&DoType=FrmEnumeration_SaveEnum&s=' + Math.random();
                    var _this = this;
                    OpenEasyUiDialog(url, "eudlgframe", "修改枚举值", 600, 400, "icon-edit", true, null, null, null, function () {
                        _this.InitData();
                    });
                },
                EditDtl: function (parentKey, enumKey) {
                    var en = new Entity("BP.Sys.SysEnumMain", parentKey);

                    var url = "./SysEnumDtl.htm?ParentKey=" + en.No + "&EnumKey=" + en.GetPara("DtlEnumKey");
                    url += "&DoType=" + GetQueryString("DoType");
                    url += "&FK_MapData=" + GetQueryString("FK_MapData");
                    url += "&Type=" + GetQueryString("Type");
                    url += "&DataType=" + GetQueryString("DataType");
                    SetHref(url);
                },
                CrateDtl: function (sysEnumMain) {
                    var no = promptGener("枚举子项编号:", sysEnumMain.No + "Dtl");
                    if (no == null || no == undefined) return;
                    var name = promptGener("枚举子项名称:", sysEnumMain.Name + "Dtl");
                    if (name == null || name == undefined) return;

                    //插入数据.
                    var en = new Entity("BP.Sys.SysEnumMain");
                    en.EnumKey = no;
                    en.No = no;
                    en.Name = name;
                    en.IsHaveDtl = 0;

                    en.SetPara("ParentKey", sysEnumMain.No);
                    en.SetPara("ParentName", sysEnumMain.Name);

                    try {
                        en.Insert();
                    } catch (e) {
                        alert("编号已经存在");
                        return;
                    }

                    //更新main信息.
                    var en = new Entity("BP.Sys.SysEnumMain", sysEnumMain);
                    en.IsHaveDtl = 1;
                    en.SetPara("DtlEnumKey", no);
                    en.SetPara("DtlName", name);
                    en.Update();


                    //调用转向.
                    this.EditDtl(en.No, enumNo)
                },
                Del: function (sysEnumMain) {
                    var v = window.confirm("您确定要删除枚举值[" + sysEnumMain.No + "]吗？");
                    if (v == false)
                        return;

                    //检查该枚举值是否被其他表单字段引用.
                    var mapAttrs = null;
                    if (this.webUser.CCBPMRunModel != 2) {
                        mapAttrs = new Entities("BP.Sys.MapAttrs");
                        mapAttrs.Retrieve("UIBindKey", sysEnumMain.No);
                    } else {
                        /*var sql = "SELECT A.FK_MapData,A.KeyOfEn,A.Name From Sys_MapAttr A,Sys_MapData B Where A.FK_MapData=B.No AND A.UIBindKey='" + sysEnumMain.No + "' AND B.OrgNo='" + this.webUser.OrgNo + "'";
                        mapAttrs = DBAccess.RunSQLReturnTable(sql);*/

                        var handler = new HttpHandler("BP.WF.HttpHandler.WF_Admin_FoolFormDesigner");
                        handler.AddPara("UIBindKey", sysEnumMain.No);
                        handler.AddPara("OrgNo", this.webUser.OrgNo);
                        mapAttrs = handler.DoMethodReturnString("SysEnumList_MapAttrs");
                        mapAttrs = JSON.parse(mapAttrs);
                    }

                    var info = '';
                    for (var i = 0; i < mapAttrs.length; i++) {
                        var attr = mapAttrs[i];
                        info += "\t\n" + i + ",表单编号:" + attr.FK_MapData + " , 字段:" + attr.KeyOfEn + ", 名称:" + attr.Name;
                    }

                    if (info != '') {

                        info = "如下表单引用了该字段您不能删除:" + info;
                        alert(info);
                        return;
                    }

                    //执行删除.
                    var enumMain = new Entity("BP.Sys.SysEnumMain", sysEnumMain.No);
                    if (this.webUser.CCBPMRunModel == 2)
                        enumMain = new Entity("BP.Cloud.Sys.SysEnumMain", sysEnumMain.No);
                    enumMain.Delete();

                    this.InitData();
                },
                InitData() {
                    var enumMains = new Entities("BP.Sys.SysEnumMains");
                    enumMains.RetrieveAll();
                    this.sysList = $.grep(enumMains, function (item) {
                        var atPara = item.AtPara;
                        atPara = atPara == null || atPara == undefined ? "" : atPara;
                        var idx = atPara.indexOf("ParentKey");
                        return idx == 0 || idx == -1;
                    })
                    var pn = Math.ceil(this.sysList.length / this.pagenum)
                    console.log(pn)
                    this.pages = []
                    for (p = 0; p < pn; p++) {
                        this.pages.push(p)
                    }
                    var sysData = []

                    for (i = 0; i < this.sysList.length; i++) {
                        var en = this.sysList[i]
                        if (i < this.pagenum) {
                            sysData.push(en)
                        }
                      
                    }
                    this.sysEnumMains=sysData
                  
                   
                },
            },
            created() {
                this.dataType = GetQueryString("DataType");
                this.fk_mapData = GetQueryString("FK_MapData");
                this.webUser = new WebUser();
                this.InitData();
            }
        });

     
        var thePlugins = 'enum';
        dialog.oncancel = function () {
            if (UE.plugins[thePlugins].editdom) {
                delete UE.plugins[thePlugins].editdom;
            }
        };
        dialog.onok = function () {
            var name = $.trim($("#TB_Name").val());
            var KeyOfEn = $.trim($("#TB_KeyOfEn").val());
            if (name == null || name.length == 0) {
                $.messager.alert('错误', '字段名称不能为空。', 'error');
                return false;
            }
            if (KeyOfEn == null || KeyOfEn.length == 0) {
                $.messager.alert('错误', '英文字段不能为空。', 'error');
                return false;
            }
            var dtlKey = "";
            var selectEmum = Baseinfo.SelectEnum;
            if (selectEmum.IsHaveDtl == "1") {
                var v = window.confirm("您需要创建枚举值[" + name + "]的关联枚举字段吗？");
                if (v == false)
                    dtlKey = "";
                else {
                    dtlKey = prompt("请输入字段名(必须为字母开头、数字或者下划线组合):", KeyOfEn + "dtl");
                    if (dtlKey == null)
                        return;
                    Baseinfo.dataType = "Select";
                }

            }
            var UIBindKey = !!selectEmum.EnumKey ? selectEmum.EnumKey : selectEmum.No;
            var handler = new HttpHandler("BP.WF.HttpHandler.WF_Admin_FoolFormDesigner");
            handler.AddPara("KeyOfEn", KeyOfEn);
            handler.AddPara("DtlKeyOfEn", dtlKey);
            handler.AddPara("FK_MapData", Baseinfo.fk_mapData);
            handler.AddPara("EnumKey", UIBindKey);
            if (Baseinfo.dataType == "Radio")
                handler.AddPara("UIContralType", 3);
            else if (Baseinfo.dataType == "Select")
                handler.AddPara("UIContralType", 1);
            else if (Baseinfo.dataType == "CheckBox")
                handler.AddPara("UIContralType", 2);
            var data = handler.DoMethodReturnString("SysEnumList_SaveEnumField");
            if (data.indexOf("err@") >= 0) {
                alert(data);
                return;
            }

            KeyOfEn = data.replace(Baseinfo.fk_mapData + "_", "");
            var _Html = "";
            var strs = [];
            if (selectEmum.CfgVal != null && selectEmum.CfgVal != "") {
                strs = selectEmum.CfgVal.split("@")
            }
            //单选按钮
            if (Baseinfo.dataType == "Radio") {
                if (strs.length != 0) {
                    _Html += "<span leipiplugins='enum' style='margin-top:1px;display:block;' id='SR_" + KeyOfEn + "' title='单选' name='leipiNewField'  data-key='" + KeyOfEn + "' data-type='" + Baseinfo.dataType + "'  data-bindKey='" + UIBindKey + "'>";
                    for (var i = 0; i < strs.length; i++) {
                        if (strs[i] == "")
                            continue;
                        var keyVal = strs[i].split("=")
                        if (keyVal.length == 2)
                            _Html += "<label style='vertical-align:middle;'><input type='radio' value= '" + keyVal[0] + "' id='RB_" + KeyOfEn + "_" + keyVal[0] + "' name='RB_" + KeyOfEn + "' data-key='" + KeyOfEn + "'  data-type='" + Baseinfo.dataType + "'   data-bindKey='" + UIBindKey + "'   style='width:15px;height:15px;vertical-align:-1px;'/>" + keyVal[1] + "&nbsp;</label>";
                    }
                    _Html += "</span>";
                }
            }
            if (Baseinfo.dataType == "Select") {
                if (strs.length != 0) {
                    _Html += "<span leipiplugins='enum' id='SS_" + KeyOfEn + "' title='下拉框' name='leipiNewField' data-type='EnumSelect'   data-bindKey='" + UIBindKey + "'>";
                    _Html += "<select id='DDL_" + KeyOfEn + "' name='DDL_" + KeyOfEn + "' data-type='EnumSelect' data-key='" + KeyOfEn + "' class='form-control' style='width:80%'>";
                    for (var i = 0; i < strs.length; i++) {
                        if (strs[i] == "")
                            continue;
                        var keyVal = strs[i].split("=")
                        if (keyVal.length == 2)
                            _Html += "<option value='" + keyVal[0] + "'>" + keyVal[1] + "</option>";
                    }
                    _Html += "</select>";
                    _Html += "</span>";
                    _Html += name;
                    //增加关联枚举值
                    if (selectEmum.IsHaveDtl == "1") {
                        var dtlUIBindKey = GetPara(selectEmum.AtPara, "DtlEnumKey");
                        var name = GetPara(selectEmum.AtPara, "DtlName");
                        _Html += "<span leipiplugins='enum' id='SS_" + dtlKey + "' title='下拉框' name='leipiNewField' data-type='EnumSelect'   data-bindKey='" + dtlUIBindKey + "'>";
                        _Html += "<select id='DDL_" + dtlKey + "' name='DDL_" + dtlKey + "' data-type='EnumSelect' data-key='" + dtlKey + "' class='form-control' >";
                        //获取枚举信息
                        var no = dtlUIBindKey;
                        if (selectEmum.OrgNo != "")
                            no = selectEmum.OrgNo + "_" + no;
                        var sysEnumMain = new Entity("BP.Sys.SysEnumMain", no);
                        if (sysEnumMain.CfgVal != null && sysEnumMain.CfgVal != undefined)
                            strs = sysEnumMain.CfgVal.split("@");
                        else
                            strs = [];
                        for (var i = 0; i < strs.length; i++) {
                            if (strs[i] == "")
                                continue;
                            var keyVal = strs[i].split("=")
                            if (keyVal.length == 2)
                                _Html += "<option value='" + keyVal[0] + "'>" + keyVal[1] + "</option>";
                        }
                        _Html += "</select>";
                        _Html += "</span>";
                        _Html += name;
                    }
                }
            }
            if (Baseinfo.dataType == "CheckBox") {
                if (strs.length != 0) {
                    _Html += "<span leipiplugins='enum' style='margin-top:1px;display:block;' id='SC_" + KeyOfEn + "' title='复选框' name='leipiNewField' data-type='EnumCheckBox'  data-key='" + KeyOfEn + "'  data-bindKey='" + UIBindKey + "'>";
                    for (var i = 0; i < strs.length; i++) {
                        if (strs[i] == "")
                            continue;
                        var keyVal = strs[i].split("=")
                        if (keyVal.length == 2)
                            _Html += "<label style='vertical-align:middle;'><input type='checkbox' value= '" + keyVal[0] + "' id='CB_" + KeyOfEn + "_" + keyVal[0] + "' name='CB_" + KeyOfEn + "'   data-type='" + Baseinfo.dataType + "'   data-bindKey='" + UIBindKey + "'  style='width:15px;height:15px;vertical-align:-1.5px;'/>" + keyVal[1] + "&nbsp;&nbsp;</label>";
                    }
                    _Html += "</span>";
                    _Html += name;
                }
            }
            editor.execCommand('insertHtml', _Html);
        };
      
    </script>
</body>
</html>
